package com.app.adapter.list;

import android.content.Context;

import java.util.List;


/**
 * 功能:所有ListView GridView 统一适配器
 * 当listView 就一种类型的时候 直接使用CommonAdapter
 *           当多种类型的时候 使用MultiItemTypeAdapter
 * @param <T>
 */
public abstract class CommonAdapter<T> extends MultiItemTypeAdapter<T>
{

    public CommonAdapter(Context context, final int layoutId, List<T> datas)
    {
        super(context, datas);

        addItemViewDelegate(new ItemViewDelegate<T>()
        {
            /**
             * 设置item layoutID
             * @return
             */
            @Override
            public int getItemViewLayoutId()
            {
                return layoutId;
            }


            /**
             * 设置type 类型 当一个layoutID 设置为true 其他动态设置
             * @param item
             * @param position
             * @return
             */
            @Override
            public boolean isForViewType(T item, int position)
            {
                return true;
            }


            @Override
            public void convert(ViewHolder holder, T t, int position)
            {
                CommonAdapter.this.convert(holder, t, position);
            }

        });
    }

    protected abstract void convert(ViewHolder viewHolder, T item, int position);

}
